]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dbusErrors: Don't generate enums
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 1 Feb 2024 19:37:45 +0000 (20:37 +0100)
committerMarge Bot <marge-bot@gnome.org>
Thu, 1 Feb 2024 23:58:49 +0000 (23:58 +0000)
Generating the enums from a list of names means that developers
have to deduce the names of enum members themselves. That's more
important than a bit more convenience when adding a new enum, so
instead spell out the exported enums, and use the enums directly
when registering a domain.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3160>

js/misc/dbusErrors.js

index 5081e374e46829cc595f6d950a7086cb2bc75396..a00288d2ced1cabfef46433bdeb945358b973883 100644 (file)
@@ -1,53 +1,45 @@
 import GLib from 'gi://GLib';
 import Gio from 'gi://Gio';
 
-function decamelcase(str, sep) {
-    return str.replace(/(.)([A-Z])/g, `$1${sep}$2`);
+function camelcase(str) {
+    const words = str.toLowerCase().split('_');
+    return words.map(w => `${w.at(0).toUpperCase()}${w.substring(1)}`).join('');
 }
 
-function registerErrorDomain(domain, errorNames, prefix = 'org.gnome.Shell') {
+function decamelcase(str) {
+    return str.replace(/(.)([A-Z])/g, '$1-$2');
+}
+
+function registerErrorDomain(domain, errorEnum, prefix = 'org.gnome.Shell') {
     const domainName =
-        `shell-${decamelcase(domain, '-').toLowerCase()}-error`;
+        `shell-${decamelcase(domain).toLowerCase()}-error`;
     const quark = GLib.quark_from_string(domainName);
 
-    for (const [code, name] of errorNames.entries()) {
+    for (const [name, code] of Object.entries(errorEnum)) {
         Gio.dbus_error_register_error(quark,
-            code, `${prefix}.${domain}.Error.${name}`);
+            code, `${prefix}.${domain}.Error.${camelcase(name)}`);
     }
     return quark;
 }
 
-function createErrorEnum(errorNames) {
-    const obj = {};
-
-    for (const [code, name] of errorNames.entries()) {
-        const propName = decamelcase(name, '_').toUpperCase();
-        obj[propName] = code;
-    }
-    return obj;
-}
-
-const modalDialogErrorNames = [
-    'UnknownType',
-    'GrabFailed',
-];
+export const ModalDialogError = {
+    UNKNOWN_TYPE: 0,
+    GRAB_FAILED: 1,
+};
 export const ModalDialogErrors =
-    registerErrorDomain('ModalDialog', modalDialogErrorNames);
-export const ModalDialogError = createErrorEnum(modalDialogErrorNames);
+    registerErrorDomain('ModalDialog', ModalDialogError);
 
-const notificationErrorNames = [
-    'InvalidApp',
-];
+export const NotificationError = {
+    INVALID_APP: 0,
+};
 export const NotificationErrors =
-    registerErrorDomain('Notifications', notificationErrorNames, 'org.gtk');
-export const NotificationError = createErrorEnum(notificationErrorNames);
-
-const extensionErrorNames = [
-    'InfoDownloadFailed',
-    'DownloadFailed',
-    'ExtractFailed',
-    'EnableFailed',
-];
+    registerErrorDomain('Notifications', NotificationError, 'org.gtk');
+
+export const ExtensionError = {
+    INFO_DOWNLOAD_FAILED: 0,
+    DOWNLOAD_FAILED: 1,
+    EXTRACT_FAILED: 2,
+    ENABLE_FAILED: 3,
+};
 export const ExtensionErrors =
-    registerErrorDomain('Extensions', extensionErrorNames);
-export const ExtensionError = createErrorEnum(extensionErrorNames);
+    registerErrorDomain('Extensions', ExtensionError);